package com.lkd.shoppingcart.service;

import java.util.List;

import com.lkd.shoppingcart.entity.Cart;
import com.lkd.shoppingcart.entity.OrdersDetail;
import com.lkd.shoppingcart.entity.OrdersView;

public interface OrderService {
	
	/**
	 * 根据单个商品创建订单
	 * @param userId
	 * @param productId
	 * @param quantity 购买数量
	 */
	public String addOrder(Integer userId, Integer productId, Integer quantity);
	
	/**
	 * 根据购物车创建订单
	 * @param cart
	 * @return
	 */
	public String addOrder(Cart cart);
	
	/**
	 * 更新订单状态
	 * @param orderId
	 * @param status 订单状态(0: 未发货，1: 已发货，2: 已签收)
	 */
	public void updateStatusById(String orderId, Integer status);
	
	/**
	 * 根据原状态更新订单状态
	 * @param oldStatus 原订单状态(0: 未发货，1: 已发货，2: 已签收)
	 * @param newStatus 新订单状态(0: 未发货，1: 已发货，2: 已签收)
	 */
	public void updateStatus(Integer oldStatus, Integer newStatus);
	
	/**
	 * 查询用户的订单
	 * @param userId
	 * @return 返回用户的订单集合（不包括状态为已完成的订单）
	 */
	public List<OrdersView> queryByUserId(Integer userId);
	
	/**
	 * 查询全部订单
	 * @return 返回（不包括状态为已完成的订单）
	 */
	public List<OrdersView> queryAll();
	
	/**
	 * 根据订单号查询订单详情
	 * @param orderId
	 * @return 返回订单详情
	 */
	public List<OrdersDetail> queryForDetail(String orderId);
	
	/**
	 * 检查购物车中商品库存是否足够
	 * @param cart
	 * @return 返回第一个库存不足的商品的编号
	 */
	public int checkStock(Cart cart);

}
